package co.edu.uniquindio.proyecto.entidades;

import java.io.Serializable;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: CuentaUsuario
 * Clase que representa la entidad CuentaUsuario
 *
 * @author Johan Sebastian Giraldo Hurtado
 * @author Universidad del Quindio
 * @version 1.0
 * @since 17/03/2014
 *
 */
@Entity
public class CuentaUsuario implements Serializable {

	/**
	 * Atributo que contiene el valor de serialVersionUID dentro de la clase
	 */
	private static final long serialVersionUID = 1L;
	   
	/**
	 * Atributo que contiene el valor de Id dentro de la clase
	 */
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer Id;
	
	/**
	 * Atributo que contiene el valor de correo dentro de la clase
	 */
	private String correo;
	
	/**
	 * Atributo que contiene el valor de clave dentro de la clase
	 */
	private String clave;
	
	/**
	 * Atributo que contiene el valor de pregunta dentro de la clase
	 */
	private String pregunta;
	
	/**
	 * Atributo que contiene el valor de respuesta dentro de la clase
	 */
	private String respuesta;
	
	@OneToOne
	private Persona persona;

	/**
	 * Este metodo permite obtener el valor del atributo id
	 * @return Retorna el valor del atributo id
	 */
	public Integer getId() {
		return Id;
	}

	/**
	 * Este metodo permite asignar un valor al atributo id
	 * @param id El valor a ser asginado al atributo id
	 */
	public void setId(Integer id) {
		Id = id;
	}

	/**
	 * Este metodo permite obtener el valor del atributo correo
	 * @return Retorna el valor del atributo correo
	 */
	public String getCorreo() {
		return correo;
	}

	/**
	 * Este metodo permite asignar un valor al atributo correo
	 * @param correo El valor a ser asginado al atributo correo
	 */
	public void setCorreo(String correo) {
		this.correo = correo;
	}

	/**
	 * Este metodo permite obtener el valor del atributo clave
	 * @return Retorna el valor del atributo clave
	 */
	public String getClave() {
		return clave;
	}

	/**
	 * Este metodo permite asignar un valor al atributo clave
	 * @param clave El valor a ser asginado al atributo clave
	 */
	public void setClave(String clave) {
		this.clave = clave;
	}

	/**
	 * Este metodo permite obtener el valor del atributo pregunta
	 * @return Retorna el valor del atributo pregunta
	 */
	public String getPregunta() {
		return pregunta;
	}

	/**
	 * Este metodo permite asignar un valor al atributo pregunta
	 * @param pregunta El valor a ser asginado al atributo pregunta
	 */
	public void setPregunta(String pregunta) {
		this.pregunta = pregunta;
	}

	/**
	 * Este metodo permite obtener el valor del atributo respuesta
	 * @return Retorna el valor del atributo respuesta
	 */
	public String getRespuesta() {
		return respuesta;
	}

	/**
	 * Este metodo permite asignar un valor al atributo respuesta
	 * @param respuesta El valor a ser asginado al atributo respuesta
	 */
	public void setRespuesta(String respuesta) {
		this.respuesta = respuesta;
	}
	
	/**
	 * Este metodo permite obtener el valor del atributo persona
	 * @return Retorna el valor del atributo persona
	 */
	public Persona getPersona() {
		return persona;
	}

	/**
	 * Este metodo permite asignar un valor al atributo persona
	 * @param persona El valor a ser asginado al atributo persona
	 */
	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((Id == null) ? 0 : Id.hashCode());
		return result;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		CuentaUsuario other = (CuentaUsuario) obj;
		if (Id == null) {
			if (other.Id != null)
				return false;
		} else if (!Id.equals(other.Id))
			return false;
		return true;
	}
	
}
